package com.fxp.project.jiuselu.web.models.sample.entity.vo;

import com.fxp.project.jiuselu.web.business.v1.request.base.ReqBasePage;
import com.fxp.project.jiuselu.web.models.sample.entity.SampleOrder;
import com.fxp.project.jiuselu.web.models.sample.entity.SapmleGoods;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 样品订单对象 jsl_sample_order
 *
 * @author Jason.Wang
 * @date 2022-06-08
 */
@Data
public class SampleOrderVo extends SampleOrder
{
    private static final long serialVersionUID = 1L;

    /** 样品主键 */
    private String sampleId;

    /** 用户id */
    private Long userId;

    /** 用户名称 */
    private String userName;

    /**
     * 下单地址信息
     */
    @NotNull(message = "用户地址信息不能为空")
    private Long addressId;

    /** 样品订单状态;0：未完结 1：已完结 2:已取消 */
    private Long sampleStatus;

    /** 发货状态;0：未发货 1：已发货 */
    private Long logisticStatus;

    /** 收货人 */
    private String consignee;

    /** 国家;0：中国 */
    private Long country;

    /** 省份id */
    private Long provinceId;

    /** 省份名称 */
    private String provinceName;

    /** 市区id */
    private Long cityId;

    /** 市区名称 */
    private String cityName;

    /** 区域id */
    private Long districtId;

    /** 区域名称 */
    private String districtName;

    /** 地址 */
    private String address;

    /** 收货手机 */
    private String phone;

    /** 邮件 */
    private String email;

    /** 物流code */
    private String logisticCode;

    /** 物流名称 */
    private String logisticName;

    /** 快递单号 */
    private String logisticNum;

    /** 下单时间 */
    private LocalDateTime addTime;

    /** 最新发货时间 */
    private Date logisticTime;

    /** 收货确认时间 */
    private Date confirmTime;

    /** 取消订单时间 */
    private Date cancelTime;

    /** 取消订单类型;0：手动取消 1：支付超时 2：退款 */
    private Long cancelType;

    /** 取消订单状态 0 申请退款 1 完成 2 审核通过 3 审核不通过 4 待打款 */
    private Long cancelStatus;

    private List<SapmleGoods> sampleGoodsList;

    public void setSampleId(String sampleId)
    {
        this.sampleId = sampleId;
    }

    public String getSampleId()
    {
        return sampleId;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public String getUserName()
    {
        return userName;
    }
    public void setSampleStatus(Long sampleStatus)
    {
        this.sampleStatus = sampleStatus;
    }

    public Long getSampleStatus()
    {
        return sampleStatus;
    }
    public void setLogisticStatus(Long logisticStatus)
    {
        this.logisticStatus = logisticStatus;
    }

    public Long getLogisticStatus()
    {
        return logisticStatus;
    }
    public void setConsignee(String consignee)
    {
        this.consignee = consignee;
    }

    public String getConsignee()
    {
        return consignee;
    }
    public void setCountry(Long country)
    {
        this.country = country;
    }

    public Long getCountry()
    {
        return country;
    }
    public void setProvinceId(Long provinceId)
    {
        this.provinceId = provinceId;
    }

    public Long getProvinceId()
    {
        return provinceId;
    }
    public void setProvinceName(String provinceName)
    {
        this.provinceName = provinceName;
    }

    public String getProvinceName()
    {
        return provinceName;
    }
    public void setCityId(Long cityId)
    {
        this.cityId = cityId;
    }

    public Long getCityId()
    {
        return cityId;
    }
    public void setCityName(String cityName)
    {
        this.cityName = cityName;
    }

    public String getCityName()
    {
        return cityName;
    }
    public void setDistrictId(Long districtId)
    {
        this.districtId = districtId;
    }

    public Long getDistrictId()
    {
        return districtId;
    }
    public void setDistrictName(String districtName)
    {
        this.districtName = districtName;
    }

    public String getDistrictName()
    {
        return districtName;
    }
    public void setAddress(String address)
    {
        this.address = address;
    }

    public String getAddress()
    {
        return address;
    }
    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getEmail()
    {
        return email;
    }
    public void setLogisticCode(String logisticCode)
    {
        this.logisticCode = logisticCode;
    }

    public String getLogisticCode()
    {
        return logisticCode;
    }
    public void setLogisticName(String logisticName)
    {
        this.logisticName = logisticName;
    }

    public String getLogisticName()
    {
        return logisticName;
    }
    public void setLogisticNum(String logisticNum)
    {
        this.logisticNum = logisticNum;
    }

    public String getLogisticNum()
    {
        return logisticNum;
    }
    public void setAddTime(LocalDateTime addTime)
    {
        this.addTime = addTime;
    }

    public LocalDateTime getAddTime()
    {
        return addTime;
    }
    public void setLogisticTime(Date logisticTime)
    {
        this.logisticTime = logisticTime;
    }

    public Date getLogisticTime()
    {
        return logisticTime;
    }
    public void setConfirmTime(Date confirmTime)
    {
        this.confirmTime = confirmTime;
    }

    public Date getConfirmTime()
    {
        return confirmTime;
    }
    public void setCancelTime(Date cancelTime)
    {
        this.cancelTime = cancelTime;
    }

    public Date getCancelTime()
    {
        return cancelTime;
    }
    public void setCancelType(Long cancelType)
    {
        this.cancelType = cancelType;
    }

    public Long getCancelType()
    {
        return cancelType;
    }
    public void setCancelStatus(Long cancelStatus)
    {
        this.cancelStatus = cancelStatus;
    }

    public Long getCancelStatus()
    {
        return cancelStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("sampleId", getSampleId())
            .append("userId", getUserId())
            .append("userName", getUserName())
            .append("sampleStatus", getSampleStatus())
            .append("logisticStatus", getLogisticStatus())
            .append("consignee", getConsignee())
            .append("country", getCountry())
            .append("provinceId", getProvinceId())
            .append("provinceName", getProvinceName())
            .append("cityId", getCityId())
            .append("cityName", getCityName())
            .append("districtId", getDistrictId())
            .append("districtName", getDistrictName())
            .append("address", getAddress())
            .append("phone", getPhone())
            .append("email", getEmail())
            .append("logisticCode", getLogisticCode())
            .append("logisticName", getLogisticName())
            .append("logisticNum", getLogisticNum())
            .append("addTime", getAddTime())
            .append("logisticTime", getLogisticTime())
            .append("confirmTime", getConfirmTime())
            .append("cancelTime", getCancelTime())
            .append("cancelType", getCancelType())
            .append("cancelStatus", getCancelStatus())
            .toString();
    }
}
